feat: add ?tab=project alias for ?tab=team#521
Conversation
Co-Authored-By: mish@e2b.dev <mish@e2b.dev>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
There was a problem hiding this comment.
LGTM — trivial, low-risk addition of a single alias key to an existing lookup map.
Extended reasoning...
Overview
The change adds one line to TAB_URL_MAP in src/configs/dashboard-tab-url-map.ts, mapping the new project tab key to the same PROTECTED_URLS.GENERAL(teamSlug) destination already used by team, settings, and general. No other files are touched.
Security risks
None. This is a static, hardcoded URL-builder map with no user input influencing the mapping keys beyond a simple lookup, and the added entry points to an already-existing, already-reachable URL builder. It does not introduce new routes, permissions, or data exposure.
Level of scrutiny
Minimal scrutiny is warranted. This is a config-style, additive, backwards-compatible change following an exact existing pattern in the same file (three other keys already map to the identical destination). The PR description also notes the existing dynamic integration test in dashboard-route.test.ts iterates over TAB_URL_MAP, so the new key is automatically covered.
Other factors
No CODEOWNERS or security-sensitive paths are involved, there are no outstanding review comments to address, and the diff is a single line. This is exactly the kind of mechanical, low-ambiguity change that does not need human review.
Summary
Adds a
projectkey toTAB_URL_MAPso/dashboard?tab=projectresolves to the same destination as/dashboard?tab=team(the General settings page). This follows the teams→projects rename in user-visible copy, giving external crosslinks (docs, CLI, emails) aprojectentrypoint that matches the new terminology.team: (teamSlug) => PROTECTED_URLS.GENERAL(teamSlug), + project: (teamSlug) => PROTECTED_URLS.GENERAL(teamSlug), general: (teamSlug) => PROTECTED_URLS.GENERAL(teamSlug),The existing
teammapping is kept for backwards compatibility. The integration test indashboard-route.test.tsiteratesTAB_URL_MAPdynamically, so the new tab is covered automatically (22/22 passing).Link to Devin session: https://app.devin.ai/sessions/3445ffca3086454aa4dcc585198e2ab7